package vn.com.dkt.cleancode.functions;

public class CleanCode {
	public static String testableHtml(PageData pageData,
			boolean includeSuiteSetup) throws Exception {
		WikiPage wikiPage = pageData.getWikiPage();
		StringBuffer buffer = new StringBuffer();
		if (pageData.hasAttribute("Test")) {
			if (includeSuiteSetup) {
				WikiPage suiteSetup = PageCrawlerImpl.getInheritedPage(
						SuiteResponder.SUITE_SETUP_NAME, wikiPage);
				if (suiteSetup != null) {
					WikiPagePath pagePath = suiteSetup.getPageCrawler()
							.getFullPath(suiteSetup);
					String pagePathName = PathParser.render(pagePath);
					buffer.append("!include -setup .").append(pagePathName)
							.append("\n");
				}
			}
			WikiPage setup = PageCrawlerImpl
					.getInheritedPage("SetUp", wikiPage);
			if (setup != null) {
				WikiPagePath setupPath = wikiPage.getPageCrawler().getFullPath(
						setup);
				String setupPathName = PathParser.render(setupPath);
				buffer.append("!include -setup .").append(setupPathName)
						.append("\n");
			}
		}
		buffer.append(pageData.getContent());
		if (pageData.hasAttribute("Test")) {
			WikiPage teardown = PageCrawlerImpl.getInheritedPage("TearDown",
					wikiPage);
			if (teardown != null) {
				WikiPagePath tearDownPath = wikiPage.getPageCrawler()
						.getFullPath(teardown);
				String tearDownPathName = PathParser.render(tearDownPath);
				buffer.append("\n").append("!include -teardown .")
						.append(tearDownPathName).append("\n");
			}
			if (includeSuiteSetup) {
				WikiPage suiteTeardown = PageCrawlerImpl.getInheritedPage(
						SuiteResponder.SUITE_TEARDOWN_NAME, wikiPage);
				if (suiteTeardown != null) {
					WikiPagePath pagePath = suiteTeardown.getPageCrawler()
							.getFullPath(suiteTeardown);
					String pagePathName = PathParser.render(pagePath);
					buffer.append("!include -teardown .").append(pagePathName)
							.append("\n");
				}
			}
		}
		pageData.setContent(buffer.toString());
		return pageData.getHtml();
	}

	/*
	 * cach 2 public static String renderPageWithSetupsAndTeardowns(PageData
	 * pageData, boolean isSuite) throws Exception { boolean isTestPage =
	 * pageData.hasAttribute("Test"); if (isTestPage) { WikiPage testPage =
	 * pageData.getWikiPage(); StringBuffer newPageContent = new StringBuffer();
	 * includeSetupPages(testPage, newPageContent, isSuite);
	 * newPageContent.append(pageData.getContent());
	 * includeTeardownPages(testPage, newPageContent, isSuite);
	 * pageData.setContent(newPageContent.toString()); } return
	 * pageData.getHtml(); }
	 * 
	 * private static void includeTeardownPages(WikiPage testPage, StringBuffer
	 * newPageContent, boolean isSuite) { // TODO Auto-generated method stub
	 * 
	 * }
	 * 
	 * private static void includeSetupPages(WikiPage testPage, StringBuffer
	 * newPageContent, boolean isSuite) { // TODO Auto-generated method stub
	 * 
	 * }
	 */

	public static String renderPageWithSetupsAndTeardowns(PageData pageData,
			boolean isSuite) throws Exception {
		if (isTestPage(pageData))
			includeSetupAndTeardownPages(pageData, isSuite);
		return pageData.getHtml();
	}

	private static void includeSetupAndTeardownPages(PageData pageData,
			boolean isSuite) {
		// TODO Auto-generated method stub

	}

	private static boolean isTestPage(PageData pageData) {
		// TODO Auto-generated method stub
		return false;
	}
}
